package com.iscas.tech.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.iscas.tech.entity.AtBasemodules;
import com.iscas.tech.param.AtBasemodulesPageParam;
import com.iscas.tech.vo.AtBasemodulesQueryVo;
import com.iscas.tech.vo.MdAndMvQueryVo;
import com.iscas.tech.vo.MvQueryVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 项目基础信息模块表 Mapper 接口
 *
 * @author yangyi
 * @since 2020-10-26
 */
@Repository
public interface AtBasemodulesMapper extends BaseMapper<AtBasemodules> {


    /**
     * 获取分页对象
     *
     * @param page
     * @param atBasemodulesPageParam
     * @return
     */
    IPage<AtBasemodulesQueryVo> getAtBasemodulesPageList(@Param("page") Page page, @Param("param") AtBasemodulesPageParam atBasemodulesPageParam);

    /**
     * @param mdType {@link com.iscas.tech.bo.MdType} 所属功能
     * @return 获取全部基础模块信息
     */
    List<AtBasemodulesQueryVo> getAll(@Param("mdType") Integer mdType);

    /**
     * @param mdType {@link com.iscas.tech.bo.MdType} 所属功能
     * @return 获取全部数据中的最大sort值
     */
    Integer getMaxMdSort(@Param("mdType") Integer mdType);

    /**
     * @param id 基础模块ID
     * @return 获取基础模块详情
     */
    AtBasemodulesQueryVo get(@Param("id") Long id);

    /**
     * 获取全部基础模块详细信息（包含模块值列表）
     *
     * @param mdType {@link com.iscas.tech.bo.MdType}
     * @return 详细信息列表
     */
    List<MdAndMvQueryVo> getDetailAll(@Param("mdType") Integer mdType);

    /**
     * @param id 模块ID
     * @return 模块下属所有模块值信息
     */
    List<MvQueryVo> getMvList(@Param("id") Integer id);
}
